package com.tea.config.oss;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 阿里云OSS配置属性
 * @author tea-shop
 */
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class OssProperties {
    
    /**
     * OSS访问域名
     */
    private String endpoint;
    
    /**
     * 访问密钥ID
     */
    private String accessKeyId;
    
    /**
     * 访问密钥Secret
     */
    private String accessKeySecret;
    
    /**
     * 存储桶名称
     */
    private String bucketName;
    
    /**
     * 文件存储路径前缀
     */
    private String pathPrefix = "tea-shop/";
    
    /**
     * 自定义域名（CDN域名）
     */
    private String customDomain;
    
    /**
     * OSS访问域名（完整域名，用于文件访问）
     */
    private String domain;
    
    /**
     * 是否启用OSS存储
     */
    private Boolean enabled = false;
    
    /**
     * 连接超时时间（毫秒）
     */
    private Integer connectionTimeout = 5000;
    
    /**
     * Socket超时时间（毫秒）
     */
    private Integer socketTimeout = 10000;
    
    /**
     * 最大连接数
     */
    private Integer maxConnections = 1024;
    
    /**
     * 获取文件访问URL
     * @param fileName 文件名
     * @return 完整的文件访问URL
     */
    public String getFileUrl(String fileName) {
        if (customDomain != null && !customDomain.isEmpty()) {
            return customDomain + "/" + pathPrefix + fileName;
        }
        
        // 优先使用配置的domain，如果没有则使用endpoint构建
        if (domain != null && !domain.isEmpty()) {
            return domain + "/" + pathPrefix + fileName;
        }
        
        // 确保endpoint不包含协议前缀
        String cleanEndpoint = endpoint;
        if (cleanEndpoint.startsWith("https://")) {
            cleanEndpoint = cleanEndpoint.substring(8);
        } else if (cleanEndpoint.startsWith("http://")) {
            cleanEndpoint = cleanEndpoint.substring(7);
        }
        
        return "https://" + bucketName + "." + cleanEndpoint + "/" + pathPrefix + fileName;
    }
}